#pragma once

#include "IControlTarget.h"
#include "../engine/Camera.h"

using System::Runtime::InteropServices::OutAttribute;

public enum class CameraType
{
	Orthographic = Camera::ORTHOGRAPHIC,
	PerspecttiveNormal = Camera::PERSPECTTIVE_NORMAL,
	PerspecttiveFov = Camera::PERSPECTTIVE_FOV,
};

public enum class CameraTransfromType
{
	WorldFrame = Camera::WORLD_FRAME,
	ViewFrame = Camera::VIEW_FRAME,	
};

public ref class CameraWrapper : public IControlTarget
{
private:
	Camera* _camera;

public:
	CameraWrapper(Camera* camera);

	void LookAt(
		float eyex, float eyey, float eyez,
		float atx, float aty, float atz,
		float upx, float upy, float upz);

	virtual void Move(float x, float y, float z);

	virtual void Scale(float x, float y, float z);

	virtual void Rotate(float x, float y, float z);

	virtual void GetPosition([Out] float% x, [Out] float% y, [Out] float% z);
};